//
//  KpiQuartzView.h
//  AppFinance
//
//  Created by wei on 12-7-15.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AFQuartzView.h"

@protocol AFKpiQuartzViewDelegate <NSObject>
-(void)kpiQuartzViewDrawEnd;
@end

@interface AFKpiQuartzView : AFQuartzView
{
    BOOL isDistroy;
    
    // 所有 k line 数据
    NSMutableArray *kLineArray;
    int kpiType; // 要绘制的 kpi type
    
    int ALL_COUNT;      // 所有记录
    int S_DRAW_INDEX;        // 每次开始绘制的 index
    
    int F_DRAW_INDEX;   // 第一次绘制 的 开始 index


    // 0: MACD平滑异同平均线
    // 1: VOL成交量
    // 2: RSI强弱指标
    // 3: BOLL布林线
    // 4: KDJ随机指标
    // 5: OBV能量潮
    // 6: CCI顺势
    // 7: PSY心里线
    NSArray *draw_DataA;
    NSArray *draw_DataB;
    NSArray *draw_DataC;
    
    NSDictionary *kipDict;
    NSString *kpiPointA;
    NSString *kpiPointB;
    NSString *kpiPointC;
    
    //BOOL isInitKPI;
    
    float s_x;  // 开始 x 坐标点
    float s_y;  // 开始 y 坐标点
    
    ////////////////////////////////////////////////////////////////////////////
    // MACD
    NSMutableArray *macdData;
    NSMutableArray *difData;
    NSMutableArray *dmData;
    
    NSArray *draw_macdData;
    NSArray *draw_difData;
    NSArray *draw_dmData;
    
    float macd_min;
    float macd_max;
    
    float macd_lastDif;
    float macd_lastMacd;
    float macd_lastDm;
    ////////////////////////////////////////////////////////////////////////////
    // VOL
    NSMutableArray *volBarData;
    NSMutableArray *volLineDataM5;
    NSMutableArray *volLineDataM10;
    
    NSArray *draw_volBarData;
    NSArray *draw_volLineDataM5;
    NSArray *draw_volLineDataM10;
    
    float vol_max;
    
    float vol_lastVol;
    float vol_lastM5;
    float vol_lastM10;
    ////////////////////////////////////////////////////////////////////////////
    // RSI
    NSMutableArray *rsiDataM6;
    NSMutableArray *rsiDataM12;
    
    NSArray *draw_rsiDataM6;
    NSArray *draw_rsiDataM12;
    
    float rsi_min;
    float rsi_max;
    
    float rsi_lastM6;
    float rsi_lastM12;
    ////////////////////////////////////////////////////////////////////////////
    // BOLL
    NSMutableArray *bool_averageArray;
    NSMutableArray *bool_upArray;
    NSMutableArray *bool_downArray;
    
    NSArray *draw_bool_averageArray;
    NSArray *draw_bool_upArray;
    NSArray *draw_bool_downArray;

    float bool_min;
    float bool_max;
    
    float bool_last_mid;
    float bool_lastup;
    float bool_last_down;
    
    ////////////////////////////////////////////////////////////////////////////
    // KDJ
    NSMutableArray *kdj_k_dataArray;
    NSMutableArray *kdj_d_dataArray;
    NSMutableArray *kdj_j_dataArray;
    
    NSArray *draw_kdj_k_dataArray;
    NSArray *draw_kdj_d_dataArray;
    NSArray *draw_kdj_j_dataArray;
    
    float kdj_min;
    float kdj_max;
    
    float kdj_last_k;
    float kdj_last_d;
    float kdj_last_j;
    
    ////////////////////////////////////////////////////////////////////////////
    // OBV
    NSMutableArray *obv_array;
    NSArray *draw_obv_array;
    
    float obv_min;
    float obv_max;
    
    float obv_last;
    
    ////////////////////////////////////////////////////////////////////////////
    // CCJ
    NSMutableArray *cci_array;
    NSArray *draw_cci_array;
    
    float cci_min;
    float cci_max;
    
    float cci_last;
    
    ////////////////////////////////////////////////////////////////////////////
    // PSY
    NSMutableArray *psy_array;
    NSArray *draw_psy_array;
    
    float psy_min;
    float psy_max;
    
    float psy_last;
}

@property(nonatomic,weak) id <AFKpiQuartzViewDelegate> delegate;

- (void) initKLineArray:(NSMutableArray*)array kpiType:(int)type isLast:(BOOL)isLast;
- (void) changeKpiType:(int)type;

- (void) touchMoveRefreshDrawArrayWithOrientation:(int) orientation;

- (void) drawInContext:(CGContextRef)context rect:(CGRect)rect;

- (void) drawBackGround:(CGContextRef)context;

- (void) drawArrayRefresh;

// MACD
- (void) drawMACD:(CGContextRef)context;
- (float) macdMin;
- (float) macdMax;
- (float) macdLastDif;
- (float) macdLastMacd;
- (float) macdLastDm;

// VOL
- (void) drawVOL:(CGContextRef)context;
- (float) volMax;
- (float) volLastVol;
- (float) volLastM5;
- (float) volLastM10;

// RSI
- (void) drawRSI:(CGContextRef)context;
- (float) rsiMin;
- (float) rsiMax;
- (float) rsiLastM6;
- (float) rsiLastM12;

// BOLL
- (void) drawBOLL:(CGContextRef)context;
- (float) boolMin;
- (float) boolMax;
- (float) boolLastMid;
- (float) boolLastUp;
- (float) boolLastDown;

// KDJ
- (void) drawKDJ:(CGContextRef)context;
- (float) kdjMin;
- (float) kdjMax;
- (float) kdjLastK;
- (float) kdjLastD;
- (float) kdjLastJ;

// OBV
- (void) drawOBV:(CGContextRef)context;
- (float) obvMin;
- (float) obvMax;
- (float) obvLast;

// CCI
- (void) drawCCI:(CGContextRef)context;
- (float) cciMin;
- (float) cciMax;
- (float) cciLast;

// PSY
- (void) drawPSY:(CGContextRef)context;
- (float) psyMin;
- (float) psyMax;
- (float) psyLast;



-(void) NotifKpiDateUpdate;

-(NSDictionary *) kpiCurrentPointInfo:(float)_x;

- (void) distory;

@end
